description
	Adds Pico support with one playing keygroup that just sends out MIDI
	to an existing Eigenharp Alpha or Tau setup. This should be ran after
	the setup that needs to be modified has finished loading.
	
	This script should be ran after the first part is finished.

script
	empty join
	
	# create the required agents
	kgroup create
	it to pico kgroup 1 name ify
	kgroup create
	it to pico kgroup 2 name ify
	scaler create
	it to pico scaler 1 name ify
	midi converter create
	it to pico midi converter 1 name ify
	midi output create
	it to pico midi output 1 name ify
	# we're not create a scale manager since an existing setup should already have it
	
	# now that the Pico keyboard should be detected in the meantime
	# connect it up to the kgroup
	pico keyboard 1 to pico kgroup 1 connect
	
	# set up the playing keygroup
	pico kgroup 1 listen
	
	output 1 create
	output 1 choose
	
	# playing keys
	k 1 add
	k 2 add
	k 3 add
	k 4 add
	k 10 add
	k 11 add
	k 12 add
	k 13 add
	k 5 add
	k 6 add
	k 7 add
	k 8 add
	k 14 add
	k 15 add
	k 16 add
	k 17 add
	
	# switches
	k 19 add
	k 20 add
	k 21 add
	k 22 add
	
	empty join
	
	# configure the scaler to play chromatic and
	# set the pitch bend range two semitones
	pico scaler 1 hey scale to major set
	pico scaler 1 hey k bend range to 2 set

	# connect the agents together
	pico kgroup 1 output 1 to pico scaler 1 connect
	pico scaler 1 to pico midi converter 1 connect
	pico midi converter 1 to pico midi output 1 connect
	pico kgroup 1 output 1 roll output to pico scaler 1 k pitch bend input connect
	
	# connect other data streams to parameters for expression
	pico scaler 1 pressure output to pico midi converter 1 parameter 1 connect
	pico scaler 1 roll output to pico midi converter 1 parameter 2 connect
	pico scaler 1 yaw output to pico midi converter 1 parameter 3 connect
	pico kgroup 1 output 1 breath output to pico midi converter 1 parameter 4 connect
	pico kgroup 1 output 1 strip position output 1 to pico midi converter 1 parameter 5 connect
	pico kgroup 1 output 1 absolute strip output 1 to pico midi converter 1 parameter 6 connect
	pico scaler 1 pressure output to pico midi converter 1 parameter 16 connect
	pico midi converter 1 parameter 1 to pressure name ify
	pico midi converter 1 parameter 2 to roll name ify
	pico midi converter 1 parameter 3 to yaw name ify
	pico midi converter 1 parameter 4 to breath name ify
	pico midi converter 1 parameter 5 to strip position 1 name ify	
	pico midi converter 1 parameter 6 to absolute strip 1 name ify
	pico midi converter 1 parameter 16 to key position name ify
	
	# connect the bottom two keys controls directly to midi converter parameters
	pico keyboard 1 k 9 pressure output to pico midi converter 1 parameter 7 connect
	pico keyboard 1 k 9 roll output to pico midi converter 1 parameter 8 connect
	pico keyboard 1 k 9 yaw output to pico midi converter 1 parameter 9 connect
	pico keyboard 1 k 18 pressure output to pico midi converter 1 parameter 10 connect
	pico keyboard 1 k 18 roll output to pico midi converter 1 parameter 11 connect
	pico keyboard 1 k 18 yaw output to pico midi converter 1 parameter 12 connect
	pico midi converter 1 parameter 7 to controller pressure 1 name ify
	pico midi converter 1 parameter 8 to controller roll 1 name ify
	pico midi converter 1 parameter 9 to controller yaw 1 name ify
	pico midi converter 1 parameter 10 to controller pressure 2 name ify
	pico midi converter 1 parameter 11 to controller roll 2 name ify
	pico midi converter 1 parameter 12 to controller yaw 2 name ify
	
	pico midi converter 1 listen
	
	# reduce the MIDI data bandwidth to prevent external hosts to be overwhelmed
	minimum decimation to 10 set
	
	# set up some mappings in the routing matrix
	parameter 1 for polyphonic aftertouch map
	parameter 3 for midi 1 map
	parameter 4 for midi 2 map
	parameter 5 for midi 16 map
	parameter 7 for midi 17 map
	parameter 8 for midi 18 map
	parameter 9 for midi 19 map
	parameter 10 for midi 80 map
	parameter 11 for midi 81 map
	parameter 12 for midi 82 map
	
	# set the MIDI channel to 1
	midi channel to 1 set
	
	empty join
	
	# create a talker to change tonics
	talker create
	it to pico tonic talker 1 name ify
	pico kgroup 1 output 1 to pico tonic talker 1 connect
	
	pico scaler 1 listen
	pico kgroup 1 listen
	pico tonic talker 1 listen
	
	pico scaler 1 tonic when 17 down
	pico scaler 1 tonic when 18 up
	
	17 to 3 colour ify
	18 to 3 colour ify
	
	empty join
	
	# create a talker to change octaves
	talker create
	it to pico octave talker 1 name ify
	pico kgroup 1 output 1 to pico octave talker 1 connect
	
	pico scaler 1 listen
	pico kgroup 1 listen
	pico octave talker 1 listen
	
	pico scaler 1 octave when 19 down
	pico scaler 1 octave when 20 up
	
	19 to 3 colour ify
	20 to 3 colour ify
	
	empty join
	
	# create a talker to change the scales
	# it can then be connected up to widgets in Stage
	talker create
	it to pico scale talker 1 name ify
	
	pico scaler 1 listen
	pico scale talker 1 listen
	interpreter listen

	" pico scale talker 1 hey 1 to 1 from 2 colour ify " when 1 do
	" pico scale talker 1 hey 2 to 1 from 2 colour ify " when 2 do
	" pico scale talker 1 hey 3 to 1 from 2 colour ify " when 3 do
	" pico scale talker 1 hey 4 to 1 from 2 colour ify " when 4 do
	" pico scale talker 1 hey 5 to 1 from 2 colour ify " when 5 do
	" pico scale talker 1 hey 6 to 1 from 2 colour ify " when 6 do
	" pico scale talker 1 hey 7 to 1 from 2 colour ify " when 7 do
	" pico scale talker 1 hey 8 to 1 from 2 colour ify " when 8 do

	pico scaler 1 scale to major when 1 set
	pico scaler 1 scale to harmonic minor when 2 set
	pico scaler 1 scale to melodic minor when 3 set
	pico scaler 1 scale to chromatic when 4 set	
	pico scaler 1 scale to blues when 5 set
	pico scaler 1 scale to pentatonic major when 6 set
	pico scaler 1 scale to diminished when 7 set
	pico scaler 1 scale to whole tone when 8 set
	
	1 to 2 colour ify
	2 to 2 colour ify
	3 to 2 colour ify
	4 to 1 colour ify
	5 to 2 colour ify
	6 to 2 colour ify
	7 to 2 colour ify
	8 to 2 colour ify
	
	empty join
	
	# setup a keygroup to colour the MIDI controller keys	
	pico keyboard 1 to pico kgroup 2 connect
	
	# set up the controller keygroup
	pico kgroup 2 listen	
	output 1 create
	output 1 choose
	k 9 add
	k 18 add	
	empty join

	# create a talker to color the controller keys
	talker create
	it to pico controller talker 1 name ify
	
	pico kgroup 2 output 1 to pico controller talker 1 connect
	
	pico kgroup 2 listen
	pico controller talker 1 listen
	interpreter listen
	
	" " when 1 silent do
	" " when 2 silent do
	
	1 to 1 colour ify
	2 to 1 colour ify
	
	empty join
	
	# create talker to browse MIDI output port
    talker create
    it to pico midi talker 1 name ify

    pico midi talker 1 listen
    interpreter listen
    " eigenbrowser , pico midi output 1 hey midi port browse " when 1 do

	empty join
	